home *** CD-ROM | disk | FTP | other *** search
- " Vim syntax file
- " Language: Modula 2
- " Maintainer: pf@artcom0.north.de (Peter Funk)
- " based on original work of Bram Moolenaar <Bram@vim.org>
- " Last Change: 2001 May 09
-
- " For version 5.x: Clear all syntax items
- " For version 6.x: Quit when a syntax file was already loaded
- if version < 600
- syntax clear
- elseif exists("b:current_syntax")
- finish
- endif
-
- " Don't ignore case (Modula-2 is case significant). This is the default in vim
-
- " Especially emphasize headers of procedures and modules:
- syn region modula2Header matchgroup=modula2Header start="PROCEDURE " end="(" contains=modula2Ident oneline
- syn region modula2Header matchgroup=modula2Header start="MODULE " end=";" contains=modula2Ident oneline
- syn region modula2Header matchgroup=modula2Header start="BEGIN (\*" end="\*)" contains=modula2Ident oneline
- syn region modula2Header matchgroup=modula2Header start="END " end=";" contains=modula2Ident oneline
- syn region modula2Keyword start="END" end=";" contains=ALLBUT,modula2Ident oneline
-
- " Some very important keywords which should be emphasized more than others:
- syn keyword modula2AttKeyword CONST EXIT HALT RETURN TYPE VAR
- " All other keywords in alphabetical order:
- syn keyword modula2Keyword AND ARRAY BY CASE DEFINITION DIV DO ELSE
- syn keyword modula2Keyword ELSIF EXPORT FOR FROM IF IMPLEMENTATION IMPORT
- syn keyword modula2Keyword IN LOOP MOD NOT OF OR POINTER QUALIFIED RECORD
- syn keyword modula2Keyword SET THEN TO UNTIL WHILE WITH
-
- syn keyword modula2Type ADDRESS BITSET BOOLEAN CARDINAL CHAR INTEGER REAL WORD
- syn keyword modula2StdFunc ABS CAP CHR DEC EXCL INC INCL ORD SIZE TSIZE VAL
- syn keyword modula2StdConst FALSE NIL TRUE
- " The following may be discussed, since NEW and DISPOSE are some kind of
- " special builtin macro functions:
- syn keyword modula2StdFunc NEW DISPOSE
- " The following types are added later on and may be missing from older
- " Modula-2 Compilers (they are at least missing from the original report
- " by N.Wirth from March 1980 ;-) Highlighting should apply nevertheless:
- syn keyword modula2Type BYTE LONGCARD LONGINT LONGREAL PROC SHORTCARD SHORTINT
- " same note applies to min and max, which were also added later to m2:
- syn keyword modula2StdFunc MAX MIN
- " The underscore was originally disallowed in m2 ids, it was also added later:
- syn match modula2Ident " [A-Z,a-z][A-Z,a-z,0-9,_]*" contained
-
- " Comments may be nested in Modula-2:
- syn region modula2Comment start="(\*" end="\*)" contains=modula2Comment,modula2Todo
- syn keyword modula2Todo contained TODO FIXME XXX
-
- " Strings
- syn region modula2String start=+"+ end=+"+
- syn region modula2String start="'" end="'"
- syn region modula2Set start="{" end="}"
-
- " Define the default highlighting.
- " For version 5.7 and earlier: only when not done already
- " For version 5.8 and later: only when an item doesn't have highlighting yet
- if version >= 508 || !exists("did_modula2_syntax_inits")
- if version < 508
- let did_modula2_syntax_inits = 1
- command -nargs=+ HiLink hi link <args>
- else
- command -nargs=+ HiLink hi def link <args>
- endif
-
- HiLink modula2Ident Identifier
- HiLink modula2StdConst Boolean
- HiLink modula2Type Identifier
- HiLink modula2StdFunc Identifier
- HiLink modula2Header Type
- HiLink modula2Keyword Statement
- HiLink modula2AttKeyword PreProc
- HiLink modula2Comment Comment
- " The following is just a matter of taste (you want to try this instead):
- " hi modula2Comment term=bold ctermfg=DarkBlue guifg=Blue gui=bold
- HiLink modula2Todo Todo
- HiLink modula2String String
- HiLink modula2Set String
-
- delcommand HiLink
- endif
-
- let b:current_syntax = "modula2"
-
- " vim: ts=8
-